home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Ebooks / Thinking in C++ V2 / C26 / RemoveDuplicates.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-25  |  872 b   |  29 lines

  1. //: C26:RemoveDuplicates.cpp
  2. // From Thinking in C++, 2nd Edition
  3. // Available at http://www.BruceEckel.com
  4. // (c) Bruce Eckel 1999
  5. // Copyright notice in Copyright.txt
  6. // Remove duplicate names from a mailing list
  7. #include "readLower.h"
  8. #include "../require.h"
  9. #include <vector>
  10. #include <algorithm>
  11. using namespace std;
  12.  
  13. int main(int argc, char* argv[]) {
  14.   requireArgs(argc, 2);
  15.   vector<string> names;
  16.   readLower(argv[1], names); 
  17.   long before = names.size();
  18.   // You must sort first for unique() to work:
  19.   sort(names.begin(), names.end()); 
  20.   // Remove adjacent duplicates:
  21.   unique(names.begin(), names.end());
  22.   long removed = before - names.size();
  23.   ofstream out(argv[2]);
  24.   assure(out, argv[2]);
  25.   copy(names.begin(), names.end(),
  26.        ostream_iterator<string>(out,"\n"));
  27.   cout << removed << " names removed" << endl;
  28. } ///:~
  29.